Option Explicit
Sub K_Sample013()
    Dim myRng  As Range
    Dim myCnt  As Long
    Dim myTmp  As Long
    Dim I      As Long
    Dim J      As Long
    Dim myFlg  As Boolean
    Dim myAr() As Variant
    Dim t As Single
    myCnt = 3000							'}Cn
    ReDim myAr(1 To myCnt)
        Set myRng = Worksheets.Add.Cells(1, 1)
    '}Cs@P
    For I = 1 To myCnt
       Randomize
        myAr(I) = Int((myCnt * 5) * Rnd + 1)
        myRng.Cells(I) = myAr(I)
    Next
    t = Timer
    E_Sample013_1 myAr, 1, myCnt
    Debug.Print Timer - t
    With myRng.Offset(, 3)
        For I = 1 To myCnt
            .Cells(I) = myAr(I)
        Next
    End With
    MsgBox "Ƨǧ"
    Set myRng = Nothing						'
End Sub

Sub E_Sample013_1(myAr() As Variant, mySt As Long, myEd As Long)
    Dim myTmp  As Long
    Dim mySplt As Long
    Dim myCntr As Long
    Dim myUbnd As Long
    Dim I      As Long
    Dim J      As Long
    Dim k      As Long
    myCntr = myAr((myEd + mySt) \ 2)
    I = mySt - 1: J = myEd + 1
    Do
        Do
            I = I + 1
        Loop While myAr(I) < myCntr
        Do
            J = J - 1
        Loop While myAr(J) > myCntr
        If I >= J Then Exit Do
        myTmp = myAr(J)
        myAr(J) = myAr(I)
        myAr(I) = myTmp
    Loop
    If I - mySt > 1 Then
        E_Sample013_1 myAr, mySt, I - 1
    End If
    If myEd - J > 1 Then
        E_Sample013_1 myAr, J + 1, myEd
    End If
End Sub
